package top.lishuoboy.mybatis.mapper;

import top.lishuoboy.mybatis.bean.Class;
import top.lishuoboy.mybatis.bean.Student;

import java.util.List;
import java.util.Map;

public interface StudentMapper {
    List<Student> select();

    // 关联查询——多对一，方式一【不推荐】：分步查询。先查询主表，再用主表的关联字段查关联表。执行了 1 + n 次 sql,性能低的很。可以通过 lazyLoadingEnabled和aggressiveLazyLoading 配置懒加载。
    List<Student> selectAssociation();

    // 不写也没事，就是xml爆红
    List<Class> selectClass();

    // 关联查询——多对一，方式二【推荐】：连表查询association定义关联对象封装规则。执行了 1 次 sql,性能高。
    List<Student> selectAssociation2();

    // 关联查询——多对一，一对多，方式三【推荐】：级联属性封装结果。执行了 1 次 sql,性能高。
    List<Student> selectProperty();

    // 关联查询——多对一，一对多，方式四【推荐】：连表查询Map封装。执行了 1 次 sql,性能高。
    List<Map> selectMap();

}